
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.CsvFileSource;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.ValueSource;

import javax.annotation.Generated;
import java.util.stream.Stream;

/**
 * Created with IntelliJ IDEA
 * Description:注解和参数化
 * User:恋恋
 * Date:2023-10-10
 * Time:22:24
 */

/**
 * 这个注解是声明一个自定义顺序
 * 在测试用例前加一个  @Order(顺序的名次)
 */
//@TestMethodOrder(MethodOrderer.OrderAnnotation.class)

/**
 * 这个注解是声明一个随机顺序
 * 声明就可以啦
 */
@TestMethodOrder(MethodOrderer.Random.class)
public class JunitTest {

    //这个限定符是public/default，不能是私有的private(就不能检测出来是一个测试用例)
    //若测试用例错误，他也会结果时候爆出来，是哪个错了
    //@Order(2)
    @Test
    void Test01(){
        System.out.println("这是JunitTest01");
    }
   // @Order(1)
    @Test
    void Test02(){
        System.out.println("这是JunitTest02");
    }

//    //进行忽略测试用例
//    @Disabled
//    void Test03(){
//        System.out.println("这是JunitTest03");
//    }
//    //这个方法属于类，因此用static
//    @BeforeAll
//    static void Test04(){
//        System.out.println("这是BeforeAll的语句");
//    }
//    @AfterAll
//    static  void Test05(){
//        System.out.println("这是AfterAll的语句");
//    }
//    @BeforeEach
//    void Test06(){
//        System.out.println("这是BeforeEach的语句");
//    }
//    @AfterEach
//    void Test07(){
//        System.out.println("这是AfterEach的语句");
//    }
//    @ParameterizedTest
//    //提供的是单参数
//    @ValueSource(ints = {1,2,3})
//    //方法需要接收
//    void Test08(int num){
//        //总共跑3次
//        System.out.println(num);
//    }
//    @ParameterizedTest
//    //提供的是单参数，不是指参数的个数，而是指参数的类型是单独的
//    @ValueSource(strings = {"1","2","3"})
//        //方法需要接收
//    void Test09(String num){
//        //总共跑3次
//        System.out.println(num);
//    }
//    //多参数-暂时不可以创建csv
//    /**
//    @ParameterizedTest
//    @CsvFileSource(resources = "test01.csv")
//    //csv格式就是按行分割，一行一个元素
//     void Test10(String name){
//        System.out.println(name);
//
//    }
//    */
//
//    //多参数-还可这样使用
//    @ParameterizedTest
//    @CsvSource({"1,2,3,''"})
//    //传递的是什么类型的参数，根据方法用什么参数来接收
//    void Test12(String num1 , String num2 , int num3 , String num4 ){
//        System.out.println(num1);
//        System.out.println(num2);
//        System.out.println(num3);
//        System.out.println(num4);
//        System.out.println("===========================");
//    }
//
//    //方法传递参数
//    //暂时不能运行，有错误
//    public static Stream<Arguments> Generator(){
//        return Stream.of(
//                Arguments.arguments(1,"张山"),
//                Arguments.arguments(2,"公主"),
//                Arguments.arguments(3,"王子")
//                );
//    }
//    @ParameterizedTest
//    @Generated("Generator")
//     void Test11(int num , String name){
//        System.out.println(name + ":" + num);
//
//    }
//




}
